const express=require("express");
const logger=require("morgan");
const favicon=require("serve-favicon");
const bodyParser=require("body-parser");
const path=require("path"); // npm i path 读取指定文件路径

//引入自己写的路由模块
const route=require("./routes/indexRouter");

const app=express();//返回一个express服务器对象

//日志模块(放在最上方)
app.use(logger("dev"));

//允许跨域
/* app.use('*', function (req, res, next) {
    res.header("Access-Control-Allow-Origin", "*");
    res.header('Access-Control-Allow-Methods', 'PUT, GET, POST, DELETE, OPTIONS');
    res.header("Access-Control-Allow-Headers", "X-Requested-With");
    res.header('Access-Control-Allow-Headers', ['mytoken','Content-Type']);
    next();
}); */

//解决跨域问题
const cors = require('cors'); 
app.use(cors({
  origin: ['http://localhost:8080','http://localhost:8081'],//可设置多个跨域
  credentials: true//允许客户端携带验证信息
}))


/* 
    bodyParser的配置应该写在路由之前,
    不然indexRouter | userController 都是拿不到post请求的数据 
*/
app.use(bodyParser.urlencoded({limit:'50mb',extended:true}));
/*
    extended:false  表示使用系统模块 querystring来处理数据，键值对中的值是string或者array形式
    extended:true   表示使用第三方模块qs来处理，可以是任何数据类型

*/
app.use(bodyParser.json({limit:'50mb'}));
// 使用路由,写在静态资源路径的前方
app.use(route);

// 设置静态资源路径
app.use(express.static(__dirname+"/public"));
app.use(express.static(__dirname+"/public/pages"));
app.use(favicon(__dirname+"/public/images/favicon.ico"));

// 404页面
app.use((req,res)=>{
    // redirect 重定向|跳转
    // 返回的状态码是302
    // res.redirect('404.html');

    res.status(404); // 设置状态码
    res.sendFile(path.join(__dirname,'public/pages','404.html'));
})


app.set("port",8888);//设置端口
app.listen(8888,()=>{
    console.log("服务器已启动："+app.get("port"));
})